package com.py.framework.service;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.py.framework.entity.MsgDetailEntity;
import com.py.framework.entity.MsgRecordEntity;
import com.py.framework.entity.SysMsgEntity;

/**
 * 系统消息Service
 * 
 * @author Leegern
 * @date 2018年4月24日
 */
public interface SysMsgService {

	/**
	 * 分页查询站内消息列表
	 * 
	 * @param params
	 * @return
	 */
	List<SysMsgEntity> queryMsgForPage(Map<String, Object> params);
	List<SysMsgEntity> queryBMMsgForPage(Map<String, Object> params);
	List<SysMsgEntity> queryQYMsgForPage(Map<String, Object> params);
	
	

	/**
	 * 分页查询消息盒子列表
	 * 
	 * @param userId
	 *            用户Id
	 * @return
	 */
	List<SysMsgEntity> queryNoticeMsgForPage(Map<String, Object> params);

	/**
	 * 根据消息Id查询消息信息
	 * 
	 * @param id
	 *            消息Id
	 * @return
	 */
	SysMsgEntity findOneMsg(long id);

	/**
	 * 根据消息Id获取消息通知
	 * 
	 * @param id
	 *            消息Id
	 * @return
	 */
	SysMsgEntity findOneNoticeMsg(long id);

	/**
	 * 查询消息详情列表
	 * 
	 * @param msgId
	 *            消息Id
	 * @return
	 */
	List<MsgDetailEntity> queryMsgDetail(long msgId);

	/**
	 * 查询消息记录列表
	 * 
	 * @param msgId
	 *            消息Id
	 * @param userId
	 *            用户Id
	 * @param msgStatus
	 *            消息状态，1：未读，2：已读
	 * @return
	 */
	List<MsgRecordEntity> queryMsgRecord(long msgId, long userId, int msgStatus);
	
	List<MsgRecordEntity> queryReadOrNot(@Param("msgId") long msgId, @Param("userId") long userId,
			@Param("msgStatus") int msgStatus);

	/**
	 * 添加站内消息
	 * 
	 * @param entity
	 * @return
	 */
	int addMsgInfo(SysMsgEntity entity);

	/**
	 * 更新站内消息
	 * 
	 * @param entity
	 * @return
	 */
	int updateMsgInfo(SysMsgEntity entity);

	/**
	 * 修改消息记录状态
	 * 
	 * @param recordId
	 *            消息记录Id
	 * @param msgStatus
	 *            消息状态, 1：未读，2：已读
	 * @return
	 */
	int updateMsgRecordStatus(long recordId, int msgStatus);

	/**
	 * 批量删除消息
	 * 
	 * @param ids
	 *            消息Id集合
	 * @return
	 */
	int batchDelMsg(List<Long> ids);

	/**
	 * 批量添加详情信息
	 * 
	 * @param datas
	 * @return
	 */
	int batchAddMsgDetailInfo(List<MsgDetailEntity> datas);

	/**
	 * 批量添加记录信息
	 * 
	 * @param datas
	 * @return
	 */
	int batchAddMsgRecordInfo(List<MsgRecordEntity> datas);

	/**
	 * 批量删除消息详情
	 * 
	 * @param ids
	 *            消息Id集合
	 * @return
	 */
	int batchDelMsgDetail(List<Long> ids);

	/**
	 * 批量删除消息记录
	 * 
	 * @param ids
	 *            消息Id集合
	 * @return
	 */
	int batchDelMsgRecord(List<Long> ids);

	/**
	 * 获取区域信息
	 * 
	 * @param parentId
	 *            区域Id
	 * @return
	 */
	List<Map<String, Object>> getAreasByPid(long parentId);

	/**
	 * 获取部门信息
	 * 
	 * @param parentId
	 *            部门Id
	 * @return
	 */
	List<Map<String, Object>> getOfficesByPid(long parentId);

	/**
	 *
	 * @Function 获取未读消息数量
	 * @FileName SysMsgService.java
	 * @MethodName getUnreadNum
	 * @param userId
	 *            用户ID
	 * @return
	 * @Date 2018年7月30日 下午3:55:32
	 * @Author Min DongXv
	 *
	 */
	int getUnreadNum(long userId);

	int getDataCollectionMessageNum();
	
	int deleMsgRecordInfo(@Param("msgId") long msgId);
}